<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            height: 200px;
            width: 200px;
            background-color: red;
            position: absolute;
        }
    </style>
</head>

<body>
    <div id="d1"></div>

    <script>
        var div = document.getElementById('d1')
        var cx;
        var cy;
        var ox;
        var oy;
        var isDown = false;
        //点下的时候，获取鼠标相对于div边缘的位置，也就是offset
        div.addEventListener('mousedown', function (e) {
            isDown = true
            ox = e.offsetX;
            oy = e.offsetY
        })
        //默认的形式参数
        //e.clientX  e.clientY  鼠标所在的位置距离浏览器边缘的距离
        //e.offsetX  e.offsetY  鼠标所在位置，距离当前鼠标选中的元素的距离

        //移动到某一个位置的时候，获取鼠标相对于浏览器边缘的位置，也就是client
        document.addEventListener('mousemove', function (e) {
            //按下移动  ，抬起不移动
            if (isDown) {
                cx = e.clientX
                cy = e.clientY
                var x = cx - ox;
                var y = cy - oy
                div.style.top = y + 'px'
                div.style.left = x + 'px'
            }
        })
        div.addEventListener('mouseup', function () {
            isDown = false
        })
    </script>
</body>

</html>